<!DOCTYPE html>
<body>
<script src="../../resources/gc.js"></script>
<script src="../../resources/js-test.js"></script>
<script>
jsTestIsAsync = true;
description("MessagePorts (and their execution contexts) should be collected by GC once close() has been called on them");
function runTest() {
    var channel = new MessageChannel();
    var port = channel.port1;
    port.onmessage = function() {
        iframeDocGC = internals.observeGC(document.querySelector('iframe').contentDocument);
        document.querySelector('iframe').remove();
        asyncGC(function() {
            shouldBeTrue("iframeDocGC.wasCollected");
            finishJSTest();
        });
    };
    window.frames[0].postMessage("connect", "*", [channel.port2]);
}
</script>
<iframe src="resources/message-port-gc-closed-cloned-iframe.html" onload="runTest()"></iframe>
</body>
